#pragma once

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <fstream>

#include "Celula.h"
#include "Populacao.h"

using namespace std;

class jogo
{
	int dim_coluna;      //numero de colunas
	int dim_linha;      //numero de linhas
	int num_pop;    //numero de populacoes
	int lin_inicio;
	int col_inicio;
	int GuardaX;

	vector<Celula> mapa;
	vector<Populacao> populacao;

public:

	//construtor
	jogo();
	~jogo();

	//gets
	int getdim_coluna()const;
	int getdim_linha()const;
	int getnum_pop()const;
	int getlin_inicio()const;
	int getcol_inicio()const;
	int GetGuardaX(void);
	int getContaPopulacao();
	int get_celula_cor(int pos);

	//sets
	void setdim_coluna(int coluna);
	void setdim_linha(int linha);
	void setnum_pop(int num);
	void setlin_inicio(int linha);
	void setcol_inicio(int coluna);
	void SetGuardaX(int x);

	//funcoes
	void abre_ficheiro(string nome);
	void dados_jogo();
	bool cria_mapa();
	bool cria_populacao(Populacao p);
	void remove_populacao(string nome);
	bool verifica_populacao(string nome);
	bool adiciona_castelo(int linha, int coluna, string nome);
	bool adiciona_soldado(int linha,int coluna,string nome);
	bool AddCelula(int i, int *flg);
	bool verifica_mundo();
	string NomesPopulacao(int i);
	bool verifica_soldado(string nome);
	bool move_soldado(int linha,int coluna,string nome);
	bool desloca_soldado(int linha,int coluna,string nome);

	//funcoes para devolver os valores das celulas 
	string get_celula_linha_1(int pos); 
	string get_celula_linha_2(int pos);
	string get_celula_linha_3(int pos);


	

};



